package com.shrct.businessprocess.project;

import com.shrct.businessprocess.project.RCSaleCommissionPayment;
import com.shrct.businessprocess.project.impl.RCSaleCommissionPayment4SettlementYearImpl;
import com.shrct.businessprocess.project.proxy.RCSaleCommissionPayment4SettlementYearProxy;
import edu.fudan.mylang.pf.EntityImplementation;
import edu.fudan.mylang.pf.IModelObject;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;

@EntityImplementation(implementBy = RCSaleCommissionPayment4SettlementYearImpl.class)
public interface RCSaleCommissionPayment4SettlementYear extends IModelObject {
  public abstract RCSaleCommissionPayment getPayment();
  
  public abstract RCSaleCommissionPayment4SettlementYear setPayment(final RCSaleCommissionPayment payment);
  
  /**
   * 佣金结算年度
   */
  public abstract Integer getSettlementYear();
  
  public abstract Double getCommissionAmount();
  
  public abstract RCSaleCommissionPayment4SettlementYear setCommissionAmount(final Double commissionAmount);
  
  public abstract Double getOverflowCommissionAmount();
  
  public abstract RCSaleCommissionPayment4SettlementYear setOverflowCommissionAmount(final Double overflowCommissionAmount);
  
  public abstract Double getTeamPrizeAmount();
  
  public abstract RCSaleCommissionPayment4SettlementYear setTeamPrizeAmount(final Double teamPrizeAmount);
  
  public abstract Double getCom2();
  
  public abstract RCSaleCommissionPayment4SettlementYear setCom2(final Double com2);
  
  public abstract Double getTax();
  
  public abstract RCSaleCommissionPayment4SettlementYear setTax(final Double tax);
  
  /**
   * 本年预扣
   */
  public abstract Double getTax4ThisYear();
  
  /**
   * 累计预扣
   */
  public abstract Double getTotalTax();
  
  public abstract Double getCom1();
  
  public abstract Double getNetCom1();
  
  public abstract Double getNetCom();
  
  /**
   * 应付佣金
   */
  public abstract Double getTotalSettlementAmount();
  
  /**
   * 预计佣金
   */
  public abstract Double getTotalAmountTarget();
  
  /**
   * 本期佣金
   */
  public abstract Double getTotalAmount();
  
  /**
   * 已付佣金
   */
  public abstract Double getTotalPaidAmount();
  
  public abstract void update(final Procedure1<? super RCSaleCommissionPayment4SettlementYear> updater);
  
  public abstract RCSaleCommissionPayment4SettlementYearProxy toProxy();
}
